package com.xuanwu.demo.proxy;

import com.xuanwu.demo.service.OrderService;
import lombok.extern.slf4j.Slf4j;

/**
 * 静态代理----代理类
 * 定义代理类OrderProxy。这个类要实现OrderService接口。并且该代理类要将接口对象作为一个成员变量，还要定义一个带参的构造器，这个参数为接口对象。目的是，将目标对象引入代理类，以便代理类调用目标类的目标方法。
 */
@Slf4j
public class OrderProxy implements OrderService {
    private OrderService target;

    /**
     * 静态代理----代理类无参构造器
     */
    public OrderProxy(){

    }
    /**
     * 静态代理----代理类带一个参数构造器
     * @param target
     */
    public OrderProxy(OrderService target) {
        this.target = target;
    }

    /**
     * 静态代理----订单支付业务接口
     * @return
     */
    @Override
    public String payOrder() {
        //静态代理----此处是对目标类的增强
        log.info(">>>订单支付前信息校验<<<");
        String res= target.payOrder();
        log.info(">>>订单支付后消息推送<<<");
        return res;
    }
}
